package com.sjd.farm.service;

import com.sjd.common.core.domain.AjaxResult;
import com.sjd.common.core.domain.model.LoginUser;
import com.sjd.farm.domain.dto.goods.*;
import org.apache.commons.lang3.tuple.MutablePair;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author : Mr.s
 * @version : 1.0
 * @description : 四季豆农场商品service
 * @date : 2022-01-28 14:42
 */
public interface SjdFarmGoodsService {

    /**
     * 增加农场商品 管理平台
     *
     * @param requestDTO requestDTO
     * @param loginUser  loginUser
     * @return return
     */
    AjaxResult add(SjdWebSiteFarmGoodsAddRequestDTO requestDTO, LoginUser loginUser);

    /**
     * 修改农场商品 管理平台
     *
     * @param requestDTO requestDTO
     * @param loginUser  loginUser
     * @return return
     */
    AjaxResult updateFarmGoods(SjdWebSiteFarmGoodsUpdateRequestDTO requestDTO, LoginUser loginUser);

    /**
     * 农场商品上下线 管理平台
     *
     * @param requestDTO requestDTO
     * @param loginUser  loginUser
     * @return return
     */
    AjaxResult onlineOfflineGoods(SjdWebSiteFarmGoodsOnlineRequestDTO requestDTO, LoginUser loginUser);

    /**
     * 删除农场商品 管理平台
     *
     * @param farmGoodsId farmGoodsId
     * @param loginUser   loginUser
     * @return return
     */
    AjaxResult deleteFarmGoods(Long farmGoodsId, LoginUser loginUser);

    /**
     * 查询农场商品 管理平台
     *
     * @param requestDTO requestDTO
     * @return return
     */
    List<SjdWebSiteFarmGoodsQueryResponseDTO> webSiteQueryFarmGoods(SjdWebSiteFarmGoodsQueryRequestDTO requestDTO);

    /**
     * 查询农场商品 小程序
     *
     * @param requestDTO requestDTO
     * @return return
     */
    List<SjdAppFarmGoodsQueryResponseDTO> appQueryFarmGoods(SjdAppFarmGoodsQueryRequestDTO requestDTO);


    /**
     * 查询农场商品 小程序
     *
     * @param farmGoodsId farmGoodsId
     * @return return
     */
    AjaxResult appQueryFarmGoodsById(Long farmGoodsId);

    /**
     * 减少库存
     *
     * @param goodsId goodsId
     * @param count   count
     * @return return
     */
    MutablePair<Boolean, String> decreaseStorage(Long goodsId, BigDecimal count);

    /**
     * 增加库存
     *
     * @param goodsId goodsId
     * @param count   count
     * @return return
     */
    MutablePair<Boolean, String> increaseStorage(Long goodsId, BigDecimal count);


}
